import React from 'react'


class Show extends React.Component {
    render() {
        return (
            <div>
                <h3>show</h3>
            </div>
        )
    }

}

/**
 * 如果一个函数的参数是一个组件，然后返回值也是一个组件，那么高函数被称为高阶组件
 * 全称： High of Component
 * @returns {*}
 * @constructor
 */
function Hoc(OldComponent) {

    /*返回值也是一个组件
    * 在返回的组件里面，我们可以为 OldComponent组件去做扩充
    * */
    return class NewComponent extends React.Component {

        componentDidMount() {
            console.log('被Hoc修饰的组件');
        }


        render() {
            return (
                <div>
                    <h2>高阶组件</h2>
                    <OldComponent/>
                </div>
            );
        }
    }
}


export default Hoc(Show);
